package com.tamecode.ioc;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author Liqc
 * @date 2021/8/3 15:27
 */
public class Director {

    /**
     * 注入 Geli 的方式有三种
     *  - 构造器
     *  - setter 方法
     *  - 接口注入 （使用），即使用接口来限制实现者注入依赖的类。由于采用接口会多一个类，所以不建议采用接口注入。
     */
    public void direct() {
        // 指定角色
        GeLi geLi = new LiuDeHua();

        // 注入具体饰演者到剧本中
        MoAttack moAttack = new MoAttack();
        moAttack.injectGeli(geLi);
        moAttack.cityGateAsk();
    }

    public void iocDirect() {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        MoAttack moAttack = context.getBean(MoAttack.class);
        moAttack.cityGateAsk();
    }

}
